package la.iok.hzsvn.lewin.movie.cloud.service;

import la.iok.hzsvn.lewin.movie.cloud.entity.OrgUnitAddress;
import la.iok.hzsvn.lewin.mybatis.service.BaseService;
import la.iok.hzsvn.share.address.Address;
import la.iok.hzsvn.share.annotations.NotNull;
import la.iok.hzsvn.share.annotations.NotNullElement;
import la.iok.hzsvn.share.annotations.Nullable;

import java.util.Collection;
import java.util.List;

public interface OrgUnitAddressService extends BaseService<OrgUnitAddress,Long> {
    /**
     * 保存组织的地址.如果存在此组织的地址,则更新,否则插入
     * @param orgUnitId 组织id
     * @param address 组织地址
     */
    void save(@Nullable Long orgUnitId, @Nullable Address address);
    /**
     * 查找组织的地址
     * @param orgUnitId 组织id
     * @return 组织地址
     */
    @Nullable
    OrgUnitAddress orgUnitAddress(@Nullable Long orgUnitId);

    /**
     * 删除组织地址
     * @param orgUnitId 组织id
     */
    int deleteOrgUnitAddress(@Nullable Long orgUnitId);

    /**
     * 根据组织id集合查询地址
     * @param orgUnitIds 组织的id集合
     * @return 地址集合
     */
    @NotNull
    @NotNullElement
    List<OrgUnitAddress> list(@Nullable Collection<Long> orgUnitIds);

    /**
     * 转换vo对象
     * @param address 实体对象
     * @return 视图对象
     */
    @NotNull
    Address po2vo(@NotNull OrgUnitAddress address);
}
